package com.teamone.etl.taskmanager.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.teamone.etl.taskmanager.dao.EtlTaskInfoDao;
import com.teamone.etl.taskmanager.entity.EtlTaskInfo;
import com.teamone.etl.taskmanager.service.EtlTaskInfoService;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 任务信息表(EtlTaskInfo)表服务实现类

 @author makejava
 @since 2021-01-08 20:42:00 */
@Service("etlTaskInfoService")
@Transactional(rollbackFor = Exception.class)
public class EtlTaskInfoServiceImpl extends ServiceImpl<EtlTaskInfoDao, EtlTaskInfo> implements EtlTaskInfoService {


    @Resource
    private EtlTaskInfoDao etlTaskInfoDao;

    @Override
    public void createTask(EtlTaskInfo etlTaskInfo) {

        etlTaskInfo.setId(UUID.randomUUID().toString());
        etlTaskInfo.setCreateTime(new Date());
        etlTaskInfo.setUpdateTime(new Date());
        etlTaskInfo.setIsDelete(0);
        etlTaskInfoDao.createTask(etlTaskInfo);
    }

    @Override
    public int findByNameNotRepeat(String name) {
        return etlTaskInfoDao.findByNameNotRepeat(name);
    }

    /**
     * 模糊分页查询
     *
     * @param weight        任务权重级别 0紧急任务 1高 2中 3低
     * @param name          任务名称
     * @param status        任务状态   0待执行    1可执行       2正在执行       3执行完成
     * @param page          当前页
     * @param size          每页显示条数
     * @return   部分数据(id,NAME,weight,status,proportion任务完成度)
     */
    @Override
    public PageInfo<EtlTaskInfo> taskSearch(Integer weight, String name, Integer status, Integer page, Integer size) {
        //最大查询100条
        size = (size > 100) ? 100 : size;
        //分页实现
        PageHelper.startPage(page, size);
        List<EtlTaskInfo> search = baseMapper.taskSearch(weight, name, status);
        return new PageInfo<>(search);
    }

    /**
     * 根据id删除
     * @param id 任务id
     */
    @Override
    public boolean deleteById(String id) {
       return baseMapper.deleteById(id);
    }

    @Override
    public void updateStatus(String id) {

    }

    @Override
    public void executeTask(String id) {

    }

}